package database

import (
	"fmt"
	"log"
	"time"
)

// GormLogger GORM日志器实现
type GormLogger struct{}

// Printf 实现GORM的日志接口
func (l *GormLogger) Printf(format string, args ...interface{}) {
	// 格式化时间
	timeStr := time.Now().Format("2006-01-02 15:04:05")

	// 处理不同类型的日志
	switch args[0] {
	case "sql":
		// SQL日志，包含执行时间、SQL语句和参数
		log.Printf("[GORM] [%s] %s | %.3fms | rows:%v | %s",
			timeStr,
			args[1], // 操作类型
			args[2], // 执行时间
			args[5], // 影响行数
			args[3], // SQL语句
		)
	case "info":
		log.Printf("[GORM] [%s] INFO: %s", timeStr, fmt.Sprintf(format[6:], args[1:]))
	case "warn":
		log.Printf("[GORM] [%s] WARN: %s", timeStr, fmt.Sprintf(format[6:], args[1:]))
	case "error":
		log.Printf("[GORM] [%s] ERROR: %s", timeStr, fmt.Sprintf(format[7:], args[1:]))
	default:
		log.Printf("[GORM] [%s] %s", timeStr, fmt.Sprintf(format, args...))
	}
}